/**
 * 给你一个字符串 text ，该字符串由若干被空格包围的单词组成。每个单词由一个或者多个小写英文字母组成，并且两个单词之间至少存在一个空格。题目测试用例保证 text 至少包含一个单词 。
 *
 * 请你重新排列空格，使每对相邻单词之间的空格数目都 相等 ，并尽可能 最大化 该数目。如果不能重新平均分配所有空格，请 将多余的空格放置在字符串末尾 ，这也意味着返回的字符串应当与原 text 字符串的长度相等。
 *
 * 返回 重新排列空格后的字符串 。
 */
class ReorderSpaces {
    public String reorderSpaces(String text) {
        int len=text.length();
       if(len==1) {
           return text;
       }
        int spaceCount=0;
        int wordCount=0;
        int i=0;
        int j=0;
        while(i<len) {
            while(i<len&&text.charAt(i)==' ') {
                i++;
                spaceCount++;
            }
           if(i<len) {
               
               while(i<len&&text.charAt(i)!=' ') {
                   i++;
               }
               j=i;
               wordCount++;
           }
        }
        StringBuilder ans=new StringBuilder();
        int perSpace=0;
        int restSpace=spaceCount;
       if(wordCount>1 ){
            perSpace=spaceCount/(wordCount-1);
        restSpace=spaceCount%(wordCount-1);
       }
       i=0;
       while(i<len) {
           while(i<len&&text.charAt(i)==' ') {
                 i++;
            }
           if(i<len) {
               while(i<len&&text.charAt(i)!=' ') {
                   ans.append(text.charAt(i));
                   i++;
               }
               if(i!=j) {
                   for(int k=0;k<perSpace;k++) {
                       ans.append(' ');
                   }
               }
           }
       }
       for(int k=0;k<restSpace;k++) {
           ans.append(' ');
       }
       return ans.toString();
    }
}